// pages/tianbao/tianbao.js
import { get } from '../../api/request'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    volunteerList: [],
    page: 1,
    pageSize: 10,
    hasMore: true,
    loading: false,
    noData: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getVolunteerList();

    // 注册登录组件到全局认证管理器
    const app = getApp();
    if (app && app.globalData && app.globalData.authManager) {
      console.log('tianbao页面: 尝试注册登录组件');
      setTimeout(() => {
        const loginComponent = this.selectComponent('#loginPopup');
        if (loginComponent) {
          console.log('tianbao页面: 找到登录组件，注册到认证管理器');
          app.globalData.authManager.setLoginPopup(loginComponent);
        }
      }, 300);
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.setData({
      volunteerList: [],
      page: 1,
      hasMore: true
    });
    this.getVolunteerList();

    // 确保登录组件已设置好
    const app = getApp();
    if (app && app.globalData && app.globalData.authManager) {
      setTimeout(() => {
        const loginComponent = this.selectComponent('#loginPopup');
        if (loginComponent) {
          app.globalData.authManager.setLoginPopup(loginComponent);
        }
      }, 300);
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({
      volunteerList: [],
      page: 1,
      hasMore: true
    })
    this.getVolunteerList().then(() => {
      wx.stopPullDownRefresh()
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (this.data.hasMore && !this.data.loading) {
      this.getVolunteerList()
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 重新登录
  reLogin() {
    // 获取App实例
    const app = getApp();

    wx.showModal({
      title: '重新登录',
      content: '确定要重新登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除现有登录信息
          wx.removeStorageSync('userInfo');
          app.globalData.userInfo = null;

          // 调用App的登录方法
          app.login();

          // 1.5秒后重新获取数据
          setTimeout(() => {
            this.getVolunteerList();
          }, 1500);
        }
      }
    });
  },

  // 获取志愿列表
  getVolunteerList() {
    this.setData({ loading: true });

    return new Promise((resolve) => {
      get('/user/reservation_list').then(res => {
        console.log('预约申请列表返回数据:', res);

        if (res.code === 200) {
          let list = [];

          // 检查数据的结构
          if (res.data && Array.isArray(res.data)) {
            list = res.data;
          } else if (res.data && res.data.list && Array.isArray(res.data.list)) {
            list = res.data.list;
          } else {
            // 如果无法找到数组数据，则使用空数组
            list = [];
          }

          const hasMore = false; // 假设后端没有分页，所以没有更多数据

          console.log('处理后的预约列表数据:', list);

          this.setData({
            volunteerList: list,
            hasMore: hasMore,
            loading: false,
            noData: list.length === 0
          });
        } else {
          // 处理错误情况
          wx.showToast({
            title: res.msg || '获取列表失败',
            icon: 'none'
          });

          this.setData({
            loading: false,
            noData: true
          });
        }

        resolve();
      }).catch(err => {
        console.error('获取预约列表错误:', err);
        wx.showToast({
          title: '网络错误，请稍后重试',
          icon: 'none'
        });
        this.setData({
          loading: false,
          noData: true
        });
        resolve();
      });
    });
  },

  // 查看志愿详情
  goToDetail(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/tianbao/detail/detail?id=${id}`
    })
  }
})